VO(Value Object)
데이터의 불변성을 보장하고 비지니스 로직에서 사용되는 데이터 객체
DTO(Data Transfer Object)와 유사하지만 setter를 가지지 않고 read-only특징을 가진다
DTO는 setter를 가지고 있기 때문에 사용하는 중에 값을 변경할 수 있지만,
VO는 사용하는 중에 객체 내부의 값을 변경할 수 없다
public class UserVO {
private Long id;
private String username;
private String email;
// 생성자
public UserVO(Long id, String username, String email) {
this.id = id;
this.username = username;
this.email = email;
}
// Getter
public Long getId() {
return id;
}
public String getUsername() {
return username;
}
public String getEmail() {
return email;
}
// equals 및 hashCode 메서드 오버라이딩
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
UserVO userVO = (UserVO) o;
return Objects.equals(id, userVO.id) &&
Objects.equals(username, userVO.username) &&
Objects.equals(email, userVO.email);
}
@Override
public int hashCode() {
return Objects.hash(id, username, email);
}
// toString 메서드 오버라이딩
@Override
public String toString() {
return "UserVO{" +
"id=" + id +
", username='" + username + '\'' +
", email='" + email + '\'' +
'}';
}
}